package com.rcn.domain;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import javax.persistence.*;

/**
 *
 * @author Valen
 */
@Entity
@Table(name="sesion",uniqueConstraints = {@UniqueConstraint(columnNames={"idSesion"})})
public class Sesion implements Serializable{

    private long id;
    /*fecha en que se va a realizar la sesion*/
    private Date fechaPactadaEntrada;
    private Date fechaPactadaSalida;
    /*si el paciente llamo y cambio la fecha queda en true
      si falto sin aviso se setea a false, permitiendo volver a true
     por cualquier desicion del medico*/
    private boolean sesionDisponible;
    
    //El paciente trajo orden?
    private boolean orden;
    
    private int box;
    
    private String hora;
    
    private long idTratamiento;
    //private Tratamiento tratamiento;
    /**
     * @return the fechaPactada
     */
    @Basic
    @Column(name = "fechaPactadaEntrada")
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Date getFechaPactadaEntrada() {
        return fechaPactadaEntrada;
    }

    /**
     * @param fechaPactada the fechaPactada to set
     */
    public void setFechaPactadaEntrada(Date fechaPactadaEntrada) {
        this.fechaPactadaEntrada = fechaPactadaEntrada;
    }

    /**
     * @return the sesionDisponible
     */
    @Basic
    @Column(name = "sesionDisponible")
    public boolean isSesionDisponible() {
        return sesionDisponible;
    }

    /**
     * @param sesionDisponible the sesionDisponible to set
     */
    public void setSesionDisponible(boolean sesionDisponible) {
        this.sesionDisponible = sesionDisponible;
    }

    /**
     * @return the id
     */

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "idSesion")
    public long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return the orden
     */
    @Basic
    @Column(name = "orden")
    public boolean isOrden() {
        return orden;
    }

    /**
     * @param orden the orden to set
     */
    public void setOrden(boolean orden) {
        this.orden = orden;
    }

    /**
     * @return the box
     */
    @Basic
    @Column(name = "box")
    public int getBox() {
        return box;
    }

    /**
     * @param box the box to set
     */
    public void setBox(int box) {
        this.box = box;
    }

    /**
     * @return the fechaPactadaSalida
     */
    @Basic
    @Column(name = "fechaPactadaSalida")
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Date getFechaPactadaSalida() {
        return fechaPactadaSalida;
    }

    /**
     * @param fechaPactadaSalida the fechaPactadaSalida to set
     */
    public void setFechaPactadaSalida(Date fechaPactadaSalida) {
        this.fechaPactadaSalida = fechaPactadaSalida;
    }
    
    /**
     * Retorna un string con la hora de entrada y salida de la sesion.
     * @return 
     */
    @Transient
    public String getIntervaloSesion(){
        Calendar cal = Calendar.getInstance();
        
        cal.setTime(fechaPactadaEntrada);
        String horaEntrada = String.format("%02d",cal.get(Calendar.HOUR));
        String minEntrada = String.format("%02d",cal.get(Calendar.MINUTE));
        
        cal.setTime(fechaPactadaSalida);
        String horaSalida = String.format("%02d", cal.get(Calendar.HOUR));
        String minSalida = String.format("%02d",cal.get(Calendar.MINUTE));
        
        return horaEntrada+":"+minEntrada+"-"+horaSalida+":"+minSalida;
    }

    /**
     * @return the idTratamiento
     */
    @Basic
    @Column(name = "idTratamiento")
    public long getIdTratamiento() {
        return idTratamiento;
    }

    /**
     * @param idTratamiento the idTratamiento to set
     */
    public void setIdTratamiento(long idTratamiento) {
        this.idTratamiento = idTratamiento;
    }
    
    @Override
    public boolean equals(Object sesion){
        if(sesion instanceof Sesion){
            if(((Sesion)sesion).getId()==this.getId()){
                return true;
            }
        }
        return false;
    }
}
